package root.repositorios;

import java.util.ArrayList;
import java.util.List;

import root.plumbum2.Sessao;
import root.plumbum2.VerificadorDadosEntrada;

/**
 * 
 * Classe que represente um repositorio de Sessoes.
 * 
 */
public class RepositorioSessao implements RepositorioInterface<Sessao> {

	private List<Sessao> repositorioSessao = new ArrayList<Sessao>();

	/**
	 * Insere uma sessao no repositorio.
	 */
	@Override
	public void insert(Sessao o) {
		this.repositorioSessao.add(o);

	}

	/**
	 * Remove uma sessao do repositorio
	 */
	@Override
	public void remove(Sessao o) {
		this.repositorioSessao.remove(o);
	}

	/**
	 * Procura por uma determinada sessao.
	 * 
	 * @return Sessao encontrada ou null caso contrario.
	 */
	@Override
	public Sessao search(Sessao o) {
		Sessao sessao = null;
		for (Sessao s : repositorioSessao) {
			if (s.getIdSessao().equals(o.getIdSessao()))
				sessao = s;
		}
		return sessao;
	}

	/**
	 * Procura por uma determinada sessao atravez do seu ID.
	 * 
	 * @param IdSessao
	 *            ID da sessao a ser procurada.
	 * @return Sessao encontrada ou null caso contrario.
	 * @throws Exception
	 *             Sessao inexistente.
	 */
	public Sessao search(String IdSessao) throws Exception {
		VerificadorDadosEntrada.verificaIdSessao(IdSessao);
		Sessao sessao = null;
		for (Sessao s : repositorioSessao) {
			if (s.getIdSessao().equals(IdSessao))
				sessao = s;
		}
		if (sessao == null)
			throw new Exception("Sessão inexistente");
		return sessao;
	}

	/**
	 * Retorna uma lista contendo as sessoes do repositorio
	 */
	@Override
	public List<Sessao> getRepositorio() {
		return this.repositorioSessao;
	}

}
